// import path from 'path'
/**
 * 所有的子集路由
 */
const getChildrenRoutes = (routes) => {
  const result = []
  routes.forEach((route) => {
    if (route.children && route.children.length > 0) {
      result.push(...route.children)
    }
  })
  return result
}

/**
 * 处理脱离层级的路由
 */
export const filterRoutes = (routes) => {
  // 获取所有的子集路由
  const childrenRoutes = getChildrenRoutes(routes)
  // 根据子集路由进行查重操作
  return routes.filter((route) => {
    // 根据 route 在childrenRoutes 中进行查重，把所有重复路由表剔除
    return !childrenRoutes.find(
      (childrenRoute) => route.path === childrenRoute.path
    )
  })
}

/**
 * 根据 routes(filterRoutes) 数据，返回对应的menu规则数据
 */
const result = []
export const generateMenus = (routes, basePath = '') => {
  // 不满足该条件 'meta && meta.title && meta.icon' 的数据不应该存在
  routes.forEach((item) => {
    // 不存在children && 不存在meta，直接返回
    if (isNull(item.children) && isNull(item.meta)) return
    // 存在meta, 不存在children
    if (!isNull(item.meta) && isNull(item.children)) {
      if (item.meta.title && item.meta.icon) {
        result.push(item)
      }
    }
    // 存在children && 不存在meta
    if (isNull(item.meta) && !isNull(item.children)) {
      generateMenus(item.children)
    }
    // 存在children && 存在meta
    if (!isNull(item.children) && !isNull(item.meta)) {
      item.children = item.children.filter(
        (item) => item.meta && item.meta.title && item.meta.icon
      )
      result.push(item)
    }
  })
  return result
}

// 判断是否为空
function isNull(data) {
  if (!data) return true
  if (JSON.stringify(data) === '{}') return true
  if (JSON.stringify(data) === '[]') return true
}
